/*
 * Registro_usos.java
 *
 * Created on 14-oct-2008, 12:08:34
 */
 
package investigaciones_itm.Productos;

import com.sun.rave.faces.data.DefaultSelectItemsArray;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.webui.jsf.component.AddRemove;
import com.sun.webui.jsf.component.Body;
import com.sun.webui.jsf.component.Button;
import com.sun.webui.jsf.component.Calendar;
import com.sun.webui.jsf.component.Form;
import com.sun.webui.jsf.component.Head;
import com.sun.webui.jsf.component.Html;
import com.sun.webui.jsf.component.Label;
import com.sun.webui.jsf.component.Link;
import com.sun.webui.jsf.component.Page;
import com.sun.webui.jsf.component.PanelGroup;
import com.sun.webui.jsf.component.PanelLayout;
import com.sun.webui.jsf.component.RadioButtonGroup;
import com.sun.webui.jsf.component.Tab;
import com.sun.webui.jsf.component.TabSet;
import com.sun.webui.jsf.component.TextArea;
import com.sun.webui.jsf.component.TextField;
import com.sun.webui.jsf.component.Upload;
import com.sun.webui.jsf.model.Option;
import com.sun.webui.jsf.model.SingleSelectOptionsList;
import com.sun.webui.jsf.model.UploadedFile;
import javax.faces.FacesException;
import investigaciones_itm.RequestBean1;
import investigaciones_itm.SessionBean1;
import investigaciones_itm.ApplicationBean1;
import investigaciones_itm.upload.Archivo;
import itm.bo.productos.ProductosBO;
import itm.exception.ArchivoException;
import itm.vo.administracion.DestinosProductosVO;
import itm.vo.administracion.TiposUsosVO;
import itm.vo.grupoInvestigacion.CiudadVO;
import itm.vo.grupoInvestigacion.GrupoInvestigacionVO;
import itm.vo.grupoInvestigacion.PaisVO;
import itm.vo.prodructos.ProductoVO;
import itm.vo.prodructos.ProductoUsoVO;
import itm.vo.personas.PersonaVO;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
import javax.faces.component.UISelectItems;
import javax.faces.component.html.HtmlInputHidden;
import javax.faces.component.html.HtmlInputText;
import javax.faces.component.html.HtmlMessages;
import javax.faces.component.html.HtmlSelectOneListbox;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
import static itm.constants.FileConstants.*;
import java.io.File;
import itm.vo.prodructos.ArchivoProductoVO;

import itm.vo.prodructos.ProductoVO;
import java.sql.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;

/**
 * <p>Page bean that corresponds to a similarly named JSP page.  This
 * class contains component definitions (and initialization code) for
 * all components that you have defined on this page, as well as
 * lifecycle methods and event handlers where you may add behavior
 * to respond to incoming events.</p>
 *
 * @author Administrador
 */
public class Registro_usos extends AbstractPageBean {
    private String nombreArchivo;   
    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">

    /**
     * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
     * This method is automatically generated, so any user-specified code inserted
     * here is subject to being replaced.</p>
     */
    private void _init() throws Exception {
        radioButtonGroupResponsableDefaultOptions.setOptions(new com.sun.webui.jsf.model.Option[]{new com.sun.webui.jsf.model.Option("personas", "Persona"), new com.sun.webui.jsf.model.Option("grupos", "Grupo")});
        radioButtonGroup1DefaultOptions.setOptions(new com.sun.webui.jsf.model.Option[]{new com.sun.webui.jsf.model.Option("SI", "SI"), new com.sun.webui.jsf.model.Option("NO", "NO")});
    }

    private Page page1 = new Page();
    
    public Page getPage1() {
        return page1;
    }
    
    public void setPage1(Page p) {
        this.page1 = p;
    }
    
    private Html html1 = new Html();
    
    public Html getHtml1() {
        return html1;
    }
    
    public void setHtml1(Html h) {
        this.html1 = h;
    }
    
    private Head head1 = new Head();
    
    public Head getHead1() {
        return head1;
    }
    
    public void setHead1(Head h) {
        this.head1 = h;
    }
    
    private Link link1 = new Link();
    
    public Link getLink1() {
        return link1;
    }
    
    public void setLink1(Link l) {
        this.link1 = l;
    }
    
    private Body body1 = new Body();
    
    public Body getBody1() {
        return body1;
    }
    
    public void setBody1(Body b) {
        this.body1 = b;
    }
    
    private Form form1 = new Form();
    
    public Form getForm1() {
        return form1;
    }
    
    public void setForm1(Form f) {
        this.form1 = f;
    }
    private PanelGroup groupPanel1 = new PanelGroup();

    public PanelGroup getGroupPanel1() {
        return groupPanel1;
    }

    public void setGroupPanel1(PanelGroup pg) {
        this.groupPanel1 = pg;
    }
    private TabSet tabSet1 = new TabSet();

    public TabSet getTabSet1() {
        return tabSet1;
    }

    public void setTabSet1(TabSet ts) {
        this.tabSet1 = ts;
    }
    private Tab tabRegistro = new Tab();

    public Tab getTabRegistro() {
        return tabRegistro;
    }

    public void setTabRegistro(Tab t) {
        this.tabRegistro = t;
    }
    private PanelLayout layoutPanel1 = new PanelLayout();

    public PanelLayout getLayoutPanel1() {
        return layoutPanel1;
    }

    public void setLayoutPanel1(PanelLayout pl) {
        this.layoutPanel1 = pl;
    }
    private Label label1 = new Label();

    public Label getLabel1() {
        return label1;
    }

    public void setLabel1(Label l) {
        this.label1 = l;
    }
    private Label label2 = new Label();

    public Label getLabel2() {
        return label2;
    }

    public void setLabel2(Label l) {
        this.label2 = l;
    }
    private TextArea textAreaDescripcion = new TextArea();

    public TextArea getTextAreaDescripcion() {
        return textAreaDescripcion;
    }

    public void setTextAreaDescripcion(TextArea ta) {
        this.textAreaDescripcion = ta;
    }
    private Label label3 = new Label();

    public Label getLabel3() {
        return label3;
    }

    public void setLabel3(Label l) {
        this.label3 = l;
    }
    private Label label4 = new Label();

    public Label getLabel4() {
        return label4;
    }

    public void setLabel4(Label l) {
        this.label4 = l;
    }
    private Label label5 = new Label();

    public Label getLabel5() {
        return label5;
    }

    public void setLabel5(Label l) {
        this.label5 = l;
    }
    private Label label6 = new Label();

    public Label getLabel6() {
        return label6;
    }

    public void setLabel6(Label l) {
        this.label6 = l;
    }
    private Label label7 = new Label();

    public Label getLabel7() {
        return label7;
    }

    public void setLabel7(Label l) {
        this.label7 = l;
    }
    private Calendar calendarInicio = new Calendar();

    public Calendar getCalendarInicio() {
        return calendarInicio;
    }

    public void setCalendarInicio(Calendar c) {
        this.calendarInicio = c;
    }
    private Label label8 = new Label();

    public Label getLabel8() {
        return label8;
    }

    public void setLabel8(Label l) {
        this.label8 = l;
    }
    private Calendar calendarFin = new Calendar();

    public Calendar getCalendarFin() {
        return calendarFin;
    }

    public void setCalendarFin(Calendar c) {
        this.calendarFin = c;
    }
    private Label label9 = new Label();

    public Label getLabel9() {
        return label9;
    }

    public void setLabel9(Label l) {
        this.label9 = l;
    }
    private TextField textFieldDura = new TextField();

    public TextField getTextFieldDura() {
        return textFieldDura;
    }

    public void setTextFieldDura(TextField tf) {
        this.textFieldDura = tf;
    }
    private Label label10 = new Label();

    public Label getLabel10() {
        return label10;
    }

    public void setLabel10(Label l) {
        this.label10 = l;
    }
    private TextField textFieldIngre = new TextField();

    public TextField getTextFieldIngre() {
        return textFieldIngre;
    }

    public void setTextFieldIngre(TextField tf) {
        this.textFieldIngre = tf;
    }
    private Label label11 = new Label();

    public Label getLabel11() {
        return label11;
    }

    public void setLabel11(Label l) {
        this.label11 = l;
    }
    private TextArea textAreaDetalleIngreso = new TextArea();

    public TextArea getTextAreaDetalleIngreso() {
        return textAreaDetalleIngreso;
    }

    public void setTextAreaDetalleIngreso(TextArea ta) {
        this.textAreaDetalleIngreso = ta;
    }
    private Label label12 = new Label();

    public Label getLabel12() {
        return label12;
    }

    public void setLabel12(Label l) {
        this.label12 = l;
    }
    private TextField textFieldRecibeIngresos = new TextField();

    public TextField getTextFieldRecibeIngresos() {
        return textFieldRecibeIngresos;
    }

    public void setTextFieldRecibeIngresos(TextField tf) {
        this.textFieldRecibeIngresos = tf;
    }
    private Label label13 = new Label();

    public Label getLabel13() {
        return label13;
    }

    public void setLabel13(Label l) {
        this.label13 = l;
    }
    private TextArea textAreaImportanciaItm = new TextArea();

    public TextArea getTextAreaImportanciaItm() {
        return textAreaImportanciaItm;
    }

    public void setTextAreaImportanciaItm(TextArea ta) {
        this.textAreaImportanciaItm = ta;
    }
    private Button buttonGuardar = new Button();

    public Button getButtonGuardar() {
        return buttonGuardar;
    }

    public void setButtonGuardar(Button b) {
        this.buttonGuardar = b;
    }
    private Button button3 = new Button();

    public Button getButton3() {
        return button3;
    }

    public void setButton3(Button b) {
        this.button3 = b;
    }
    private HtmlSelectOneListbox listboxTipoUso = new HtmlSelectOneListbox();

    public HtmlSelectOneListbox getListboxTipoUso() 
    
    {
        listboxTipoUso = new HtmlSelectOneListbox();
        String    idTipoUso;
        String nombreTipoUso;
        
        ProductosBO productosBO = new ProductosBO();
        List<TiposUsosVO> listaTipoUso = new ArrayList<TiposUsosVO>();
        List collection = new ArrayList();
        try{
            listaTipoUso =productosBO.ListarTipoUsos();
          collection.add(new SelectItem(0, "-Seleccione un Uso-"));
            for (int i=0; i<listaTipoUso.size();i++) {
                idTipoUso =listaTipoUso.get(i).getIdTipoUso();
                nombreTipoUso=listaTipoUso.get(i).getNombreTipoUso();
               
                collection.add(new SelectItem(idTipoUso,nombreTipoUso));
            } // end for
            UISelectItems listaMenu = new UISelectItems();
            listaMenu.setValue(collection);
            listboxTipoUso.getChildren().add(listaMenu);
        }catch(Exception e){
            e.getStackTrace();
        }
        return listboxTipoUso;
    }

    public void setListboxTipoUso(HtmlSelectOneListbox hsol) {
        this.listboxTipoUso = hsol;
    }
    private UISelectItems listbox1SelectItems = new UISelectItems();

    public UISelectItems getListbox1SelectItems() {
        return listbox1SelectItems;
    }

    public void setListbox1SelectItems(UISelectItems uisi) {
        this.listbox1SelectItems = uisi;
    }
    private HtmlSelectOneListbox listboxDestinos = new HtmlSelectOneListbox();

    public HtmlSelectOneListbox getListboxDestinos() {
        
        
        listboxDestinos = new HtmlSelectOneListbox();
        String    idDestinos;
        String nombreDestino;
        
        ProductosBO productosBO = new ProductosBO();
        List<DestinosProductosVO> listaDestino = new ArrayList<DestinosProductosVO>();
        List collection = new ArrayList();
        try{
            listaDestino =productosBO.ListarDestinoProduc();
          collection.add(new SelectItem(0, "-Seleccione un Destino-"));
            for (int i=0; i<listaDestino.size();i++) {
                idDestinos =listaDestino.get(i).getIdDestinos();
                nombreDestino=listaDestino.get(i).getNombreDestinos();
               
                collection.add(new SelectItem(idDestinos,nombreDestino));
            } // end for
            UISelectItems listaMenu = new UISelectItems();
            listaMenu.setValue(collection);
            listboxDestinos.getChildren().add(listaMenu);
        }catch(Exception e){
            e.getStackTrace();
        }
      
        return listboxDestinos;
    }

    public void setListboxDestinos(HtmlSelectOneListbox hsol) {
        this.listboxDestinos = hsol;
    }
    private DefaultSelectItemsArray listbox1DefaultItems1 = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getListbox1DefaultItems1() {
        return listbox1DefaultItems1;
    }

    public void setListbox1DefaultItems1(DefaultSelectItemsArray dsia) {
        this.listbox1DefaultItems1 = dsia;
    }
    private UISelectItems listbox1SelectItems1 = new UISelectItems();

    public UISelectItems getListbox1SelectItems1() {
        return listbox1SelectItems1;
    }

    public void setListbox1SelectItems1(UISelectItems uisi) {
        this.listbox1SelectItems1 = uisi;
    }
    private DefaultSelectItemsArray listboxTipoUsoDefaultItems = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getListboxTipoUsoDefaultItems() {
        return listboxTipoUsoDefaultItems;
    }

    public void setListboxTipoUsoDefaultItems(DefaultSelectItemsArray dsia) {
        this.listboxTipoUsoDefaultItems = dsia;
    }
    private DefaultSelectItemsArray listbox1DefaultItems2 = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getListbox1DefaultItems2() {
        return listbox1DefaultItems2;
    }

    public void setListbox1DefaultItems2(DefaultSelectItemsArray dsia) {
        this.listbox1DefaultItems2 = dsia;
    }
    private DefaultSelectItemsArray listbox1DefaultItems3 = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getListbox1DefaultItems3() {
        return listbox1DefaultItems3;
    }

    public void setListbox1DefaultItems3(DefaultSelectItemsArray dsia) {
        this.listbox1DefaultItems3 = dsia;
    }
    private HtmlSelectOneListbox listboxGrupoInv = new HtmlSelectOneListbox();

    public HtmlSelectOneListbox getListboxGrupoInv() {
        
        listboxGrupoInv = new HtmlSelectOneListbox();
        
        int    idGrupoInvestigacion;
        String nombreGrupoInvestigacion;
        
        ProductosBO productosBO = new ProductosBO();
        List<GrupoInvestigacionVO> listaGrupoInvestigacion = new ArrayList<GrupoInvestigacionVO>();
        List collection = new ArrayList();
        try{
            listaGrupoInvestigacion =productosBO.ListarGrupoInv();
             collection.add(new SelectItem(0, "-Seleccione un Grupo-"));
            for (int i=0; i<listaGrupoInvestigacion.size();i++) {
                idGrupoInvestigacion =listaGrupoInvestigacion.get(i).getIdGrupo();
                nombreGrupoInvestigacion=listaGrupoInvestigacion.get(i).getNombreGrupo();
               
                collection.add(new SelectItem(idGrupoInvestigacion,nombreGrupoInvestigacion));
            } // end for
            UISelectItems listaMenu = new UISelectItems();
            listaMenu.setValue(collection);
            listboxGrupoInv.getChildren().add(listaMenu);
        }catch(Exception e){
            e.getStackTrace();
        }
        return listboxGrupoInv;
    }

    public void setListboxGrupoInv(HtmlSelectOneListbox hsol) {
        this.listboxGrupoInv = hsol;
    }
    private UISelectItems listbox1SelectItems2 = new UISelectItems();

    public UISelectItems getListbox1SelectItems2() {
        return listbox1SelectItems2;
    }

    public void setListbox1SelectItems2(UISelectItems uisi) {
        this.listbox1SelectItems2 = uisi;
    }
    private AddRemove addRemoveList1 = new AddRemove();

    public AddRemove getAddRemoveList1() {
        return addRemoveList1;
    }

    public void setAddRemoveList1(AddRemove ar) {
        this.addRemoveList1 = ar;
    }
    
    private Option[] availableOptions = null;
       
    /** Holds value of property selectedOptions. */
    private String[] selectedOptions = null;

    public Option[] getAvailableOptions() {
        
        return availableOptions;
    }

    public void setAvailableOptions(Option[] availableOptions) {
        this.availableOptions = availableOptions;
    }

    public String[] getSelectedOptions() {
        return selectedOptions;
    }

    public void setSelectedOptions(String[] selectedOptions) {
        this.selectedOptions = selectedOptions;
    }
    private HtmlSelectOneListbox listboxPais = new HtmlSelectOneListbox();

    public HtmlSelectOneListbox getListboxPais() {
        
        listboxPais = new HtmlSelectOneListbox();
        int    idPais;
        String nombrePais;
        
        ProductosBO productosBO = new ProductosBO();
        List<PaisVO> listaPais = new ArrayList<PaisVO>();
        List collection = new ArrayList();
        try{
            listaPais =productosBO.ListarPais();
         collection.add(new SelectItem(0, "-Seleccione un País-"));
            for (int i=0; i<listaPais.size();i++) {
                idPais =listaPais.get(i).getIdPais();
                nombrePais=listaPais.get(i).getPais();
               
                collection.add(new SelectItem(idPais,nombrePais));
            } // end for
            UISelectItems listaMenu = new UISelectItems();
            listaMenu.setValue(collection);
            listboxPais.getChildren().add(listaMenu);
        }catch(Exception e){
            e.getStackTrace();
        } 
        return listboxPais;
    }

    public void setListboxPais(HtmlSelectOneListbox hsol) {
        this.listboxPais = hsol;
    }
    private DefaultSelectItemsArray listbox1DefaultItems4 = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getListbox1DefaultItems4() {
        return listbox1DefaultItems4;
    }

    public void setListbox1DefaultItems4(DefaultSelectItemsArray dsia) {
        this.listbox1DefaultItems4 = dsia;
    }
    private UISelectItems listbox1SelectItems3 = new UISelectItems();

    public UISelectItems getListbox1SelectItems3() {
        return listbox1SelectItems3;
    }

    public void setListbox1SelectItems3(UISelectItems uisi) {
        this.listbox1SelectItems3 = uisi;
    }
    private DefaultSelectItemsArray listboxDestinosDefaultItems = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getListboxDestinosDefaultItems() {
        return listboxDestinosDefaultItems;
    }

    public void setListboxDestinosDefaultItems(DefaultSelectItemsArray dsia) {
        this.listboxDestinosDefaultItems = dsia;
    }
    private DefaultSelectItemsArray listboxGrupoInvDefaultItems = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getListboxGrupoInvDefaultItems() {
        return listboxGrupoInvDefaultItems;
    }

    public void setListboxGrupoInvDefaultItems(DefaultSelectItemsArray dsia) {
        this.listboxGrupoInvDefaultItems = dsia;
    }
    private DefaultSelectItemsArray listbox1DefaultItems5 = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getListbox1DefaultItems5() {
        return listbox1DefaultItems5;
    }

    public void setListbox1DefaultItems5(DefaultSelectItemsArray dsia) {
        this.listbox1DefaultItems5 = dsia;
    }
    private DefaultSelectItemsArray listbox1DefaultItems6 = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getListbox1DefaultItems6() {
        return listbox1DefaultItems6;
    }

    public void setListbox1DefaultItems6(DefaultSelectItemsArray dsia) {
        this.listbox1DefaultItems6 = dsia;
    }
    private HtmlSelectOneListbox listboxCiudad = new HtmlSelectOneListbox();

    public HtmlSelectOneListbox getListboxCiudad() {
        return listboxCiudad;
    }

    public void setListboxCiudad(HtmlSelectOneListbox hsol) {
        this.listboxCiudad = hsol;
    }
    private UISelectItems listbox1SelectItems4 = new UISelectItems();

    public UISelectItems getListbox1SelectItems4() {
        return listbox1SelectItems4;
    }

    public void setListbox1SelectItems4(UISelectItems uisi) {
        this.listbox1SelectItems4 = uisi;
    }
    private RadioButtonGroup radioButtonGroupResponsable = new RadioButtonGroup();

    public RadioButtonGroup getRadioButtonGroupResponsable() {
        return radioButtonGroupResponsable;
    }

    public void setRadioButtonGroupResponsable(RadioButtonGroup rbg) {
        this.radioButtonGroupResponsable = rbg;
    }
    private SingleSelectOptionsList radioButtonGroupResponsableDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getRadioButtonGroupResponsableDefaultOptions() {
        return radioButtonGroupResponsableDefaultOptions;
    }

    public void setRadioButtonGroupResponsableDefaultOptions(SingleSelectOptionsList ssol) {
        this.radioButtonGroupResponsableDefaultOptions = ssol;
    }
    private RadioButtonGroup radioButtonGroup1 = new RadioButtonGroup();

    public RadioButtonGroup getRadioButtonGroup1() {
        return radioButtonGroup1;
    }

    public void setRadioButtonGroup1(RadioButtonGroup rbg) {
        this.radioButtonGroup1 = rbg;
    }
    private SingleSelectOptionsList radioButtonGroup1DefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getRadioButtonGroup1DefaultOptions() {
        return radioButtonGroup1DefaultOptions;
    }

    public void setRadioButtonGroup1DefaultOptions(SingleSelectOptionsList ssol) {
        this.radioButtonGroup1DefaultOptions = ssol;
    }
    private HtmlSelectOneListbox listboxtiempo = new HtmlSelectOneListbox();

    public HtmlSelectOneListbox getListboxtiempo() {
        
        
        listboxtiempo = new HtmlSelectOneListbox();
        List collection = new ArrayList();
        collection.add(new SelectItem("Horas", "Horas"));
        collection.add(new SelectItem("Días", "Días"));
        collection.add(new SelectItem("Semanas", "Semanas"));
        UISelectItems listaMenu = new UISelectItems();
        listaMenu.setValue(collection);
        listboxtiempo.getChildren().add(listaMenu);
        
        
        return listboxtiempo;
    }

    public void setListboxtiempo(HtmlSelectOneListbox hsol) {
        this.listboxtiempo = hsol;
    }
    private DefaultSelectItemsArray listbox1DefaultItems7 = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getListbox1DefaultItems7() {
        return listbox1DefaultItems7;
    }

    public void setListbox1DefaultItems7(DefaultSelectItemsArray dsia) {
        this.listbox1DefaultItems7 = dsia;
    }
    private UISelectItems listbox1SelectItems5 = new UISelectItems();

    public UISelectItems getListbox1SelectItems5() {
        return listbox1SelectItems5;
    }

    public void setListbox1SelectItems5(UISelectItems uisi) {
        this.listbox1SelectItems5 = uisi;
    }
    private DefaultSelectItemsArray listbox1DefaultItems8 = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getListbox1DefaultItems8() {
        return listbox1DefaultItems8;
    }

    public void setListbox1DefaultItems8(DefaultSelectItemsArray dsia) {
        this.listbox1DefaultItems8 = dsia;
    }
    private DefaultSelectItemsArray listbox1DefaultItems9 = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getListbox1DefaultItems9() {
        return listbox1DefaultItems9;
    }

    public void setListbox1DefaultItems9(DefaultSelectItemsArray dsia) {
        this.listbox1DefaultItems9 = dsia;
    }
    private Label label14 = new Label();

    public Label getLabel14() {
        return label14;
    }

    public void setLabel14(Label l) {
        this.label14 = l;
    }
    private Label label15 = new Label();

    public Label getLabel15() {
        return label15;
    }

    public void setLabel15(Label l) {
        this.label15 = l;
    }
    private TextField texQuienUsa = new TextField();

    public TextField getTexQuienUsa() {
        return texQuienUsa;
    }

    public void setTexQuienUsa(TextField tf) {
        this.texQuienUsa = tf;
    }
    private HtmlMessages messageList1 = new HtmlMessages();

    public HtmlMessages getMessageList1() {
        return messageList1;
    }

    public void setMessageList1(HtmlMessages hm) {
        this.messageList1 = hm;
    }
    private HtmlInputHidden hiddenFieldidProducto = new HtmlInputHidden();

    public HtmlInputHidden getHiddenFieldidProducto() {
        return hiddenFieldidProducto;
    }

    public void setHiddenFieldidProducto(HtmlInputHidden hih) {
        this.hiddenFieldidProducto = hih;
    }
    private Tab tabAnexo = new Tab();

    public Tab getTabAnexo() {
        return tabAnexo;
    }

    public void setTabAnexo(Tab t) {
        this.tabAnexo = t;
    }
    private PanelLayout layoutPanel2 = new PanelLayout();

    public PanelLayout getLayoutPanel2() {
        return layoutPanel2;
    }

    public void setLayoutPanel2(PanelLayout pl) {
        this.layoutPanel2 = pl;
    }
    private Label label16 = new Label();

    public Label getLabel16() {
        return label16;
    }

    public void setLabel16(Label l) {
        this.label16 = l;
    }
    private Label label17 = new Label();

    public Label getLabel17() {
        return label17;
    }

    public void setLabel17(Label l) {
        this.label17 = l;
    }
    private TextField textFieldNombreProducto1 = new TextField();

    public TextField getTextFieldNombreProducto1() {
        return textFieldNombreProducto1;
    }

    public void setTextFieldNombreProducto1(TextField tf) {
        this.textFieldNombreProducto1 = tf;
    }
    private Button buttonAdjuntarArchivo1 = new Button();

    public Button getButtonAdjuntarArchivo1() {
        return buttonAdjuntarArchivo1;
    }

    public void setButtonAdjuntarArchivo1(Button b) {
        this.buttonAdjuntarArchivo1 = b;
    }
    private Label label18 = new Label();

    public Label getLabel18() {
        return label18;
    }

    public void setLabel18(Label l) {
        this.label18 = l;
    }
    private Label label19 = new Label();

    public Label getLabel19() {
        return label19;
    }

    public void setLabel19(Label l) {
        this.label19 = l;
    }
    private Label label20 = new Label();

    public Label getLabel20() {
        return label20;
    }

    public void setLabel20(Label l) {
        this.label20 = l;
    }
    private TextArea textAreaDescripcion1 = new TextArea();

    public TextArea getTextAreaDescripcion1() {
        return textAreaDescripcion1;
    }

    public void setTextAreaDescripcion1(TextArea ta) {
        this.textAreaDescripcion1 = ta;
    }
    private HtmlInputText textFieldRutaArchivo1 = new HtmlInputText();

    public HtmlInputText getTextFieldRutaArchivo1() {
        return textFieldRutaArchivo1;
    }

    public void setTextFieldRutaArchivo1(HtmlInputText hit) {
        this.textFieldRutaArchivo1 = hit;
    }
    private TextField textFieldIDProducto1 = new TextField();

    public TextField getTextFieldIDProducto1() {
        return textFieldIDProducto1;
    }

    public void setTextFieldIDProducto1(TextField tf) {
        this.textFieldIDProducto1 = tf;
    }
    private TextField textFieldNombreArchivo1 = new TextField();

    public TextField getTextFieldNombreArchivo1() {
        return textFieldNombreArchivo1;
    }

    public void setTextFieldNombreArchivo1(TextField tf) {
        this.textFieldNombreArchivo1 = tf;
    }
    private Upload fileUpload1 = new Upload();

    public Upload getFileUpload1() {
        return fileUpload1;
    }

    public void setFileUpload1(Upload u) {
        this.fileUpload1 = u;
    }
    private Calendar calendarFecha1 = new Calendar();

    public Calendar getCalendarFecha1() {
        return calendarFecha1;
    }

    public void setCalendarFecha1(Calendar c) {
        this.calendarFecha1 = c;
    }
    private Label label21 = new Label();

    public Label getLabel21() {
        return label21;
    }

    public void setLabel21(Label l) {
        this.label21 = l;
    }
    private Button button1 = new Button();

    public Button getButton1() {
        return button1;
    }

    public void setButton1(Button b) {
        this.button1 = b;
    }
    private Button button2 = new Button();

    public Button getButton2() {
        return button2;
    }

    public void setButton2(Button b) {
        this.button2 = b;
    }
    private Button button4 = new Button();

    public Button getButton4() {
        return button4;
    }

    public void setButton4(Button b) {
        this.button4 = b;
    }
    private HtmlMessages messageList2 = new HtmlMessages();

    public HtmlMessages getMessageList2() {
        return messageList2;
    }

    public void setMessageList2(HtmlMessages hm) {
        this.messageList2 = hm;
    }
    private Label label22 = new Label();

    public Label getLabel22() {
        return label22;
    }

    public void setLabel22(Label l) {
        this.label22 = l;
    }
    private Label label23 = new Label();

    public Label getLabel23() {
        return label23;
    }

    public void setLabel23(Label l) {
        this.label23 = l;
    }

    // </editor-fold>

    /**
     * <p>Construct a new Page bean instance.</p>
     */
    public Registro_usos() {        
    }

    /**
     * <p>Callback method that is called whenever a page is navigated to,
     * either directly via a URL, or indirectly via page navigation.
     * Customize this method to acquire resources that will be needed
     * for event handlers and lifecycle methods, whether or not this
     * page is performing post back processing.</p>
     * 
     * <p>Note that, if the current request is a postback, the property
     * values of the components do <strong>not</strong> represent any
     * values submitted with this request.  Instead, they represent the
     * property values that were saved for this view when it was rendered.</p>
     */
    @Override
    public void init() {
        // Perform initializations inherited from our superclass
        super.init();
        // Perform application initialization that must complete
        // *before* managed components are initialized
        // TODO - add your own initialiation code here
        
        // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
        // Initialize automatically managed components
        // *Note* - this logic should NOT be modified
        try {
            _init();
        } catch (Exception e) {
            log("Registro_usos Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
        }
        
        // </editor-fold>
        // Perform application initialization that must complete
        // *after* managed components are initialized
        // TODO - add your own initialization code here
        productoVO = getSessionBean1().getProductoVO();
        llenarInformacion(productoVO);
    }

    /**
     * <p>Callback method that is called after the component tree has been
     * restored, but before any event processing takes place.  This method
     * will <strong>only</strong> be called on a postback request that
     * is processing a form submit.  Customize this method to allocate
     * resources that will be required in your event handlers.</p>
     */
    @Override
    public void preprocess() {
    }

    /**
     * <p>Callback method that is called just before rendering takes place.
     * This method will <strong>only</strong> be called for the page that
     * will actually be rendered (and not, for example, on a page that
     * handled a postback and then navigated to a different page).  Customize
     * this method to allocate resources that will be required for rendering
     * this page.</p>
     */
    @Override
    public void prerender() {
        
        PersonaVO personaVO = getRequestBean1().getPersonaVO();
        String idPersona="";
        String nombrePersona="";
        ProductosBO productosBO = new ProductosBO();
        List<PersonaVO> listaPersonas = new ArrayList<PersonaVO>();
        try{
            listaPersonas=productosBO.listarPersona(personaVO);
            Option[] opcion = new Option[listaPersonas.size()];
            for (int i=0; i<listaPersonas.size();i++) {
                idPersona =listaPersonas.get(i).getIdPersona();
                nombrePersona= listaPersonas.get(i).getNombrePersona();
                opcion[i]=new Option(idPersona, nombrePersona);
            } // end for
            availableOptions=opcion;
        }catch(Exception e){
            e.getStackTrace();
        }
        
        
    }

    /**
     * <p>Callback method that is called after rendering is completed for
     * this request, if <code>init()</code> was called (regardless of whether
     * or not this was the page that was actually rendered).  Customize this
     * method to release resources acquired in the <code>init()</code>,
     * <code>preprocess()</code>, or <code>prerender()</code> methods (or
     * acquired during execution of an event handler).</p>
     */
    @Override
    public void destroy() {
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected RequestBean1 getRequestBean1() {
        return (RequestBean1) getBean("RequestBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected SessionBean1 getSessionBean1() {
        return (SessionBean1) getBean("SessionBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected ApplicationBean1 getApplicationBean1() {
        return (ApplicationBean1) getBean("ApplicationBean1");
    }
 
    ProductoVO productoVO;
    ProductoUsoVO productoUsoVO;
    ArchivoProductoVO archivoProductoVO;
    ProductosBO productosBO;
    String idProducto;

    public String tabRegistro_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        return null;
    }
    public void addRemoveList1_processValueChange(ValueChangeEvent event) {
    }

    public void listboxPais_processValueChange(ValueChangeEvent vce) {
        
       String pais = (String) vce.getNewValue();
        ProductosBO productosBO;
        int idPais=Integer.parseInt(pais); 
        int idCiudad=0;
        
        String ciudad="";
        PaisVO paisVO;
        List<CiudadVO> listaCiudades = new ArrayList<CiudadVO>();
        List collection = new ArrayList();
        UISelectItems listMenu = new UISelectItems();
        
        if(!getListboxCiudad().getChildren().isEmpty()){
            getListboxCiudad().getChildren().clear();
        }
        
        try{
            paisVO = new PaisVO();
            productosBO= new ProductosBO();
            paisVO.setIdPais(idPais);
            listaCiudades=productosBO.listarCiudadesSegunPais(paisVO);
            collection.add(new SelectItem(0, "-Seleccione una Ciudad-"));
            for (int i=0; i<listaCiudades.size();i++) {
                idCiudad =listaCiudades.get(i).getIdCiudad();
                ciudad= listaCiudades.get(i).getCiudad();
                collection.add(new SelectItem(idCiudad, ciudad));
            } // end for            
            listMenu.setValue(collection);
            getListboxCiudad().getChildren().add(listMenu);
        }catch(Exception e){
            e.getStackTrace();
        }    
    }

    String seleccion="";
    

    public void radioButtonGroupResponsable_processValueChange(ValueChangeEvent vce) {
        
        
        
           seleccion= (String)vce.getNewValue();
        if(seleccion.equals("personas"))
        {
            addRemoveList1.setRendered(true);
            listboxGrupoInv.setRendered(false);
            
        }else{if(seleccion.equals("grupos")){
             addRemoveList1.setRendered(false);
            listboxGrupoInv.setRendered(true);
        }
             
        }
    }
   

   String idTipoUso="", descripcionUso="", idDestino="", quienUsa="", idResponsable,idGrupo="", idPersona="",
            idPais="", idCiudad="", enProceso="", duracion="", dura="", ingresosGenerados="", detalleIngreso="",
            recibeIngreso="", importanciaITM="";
         
          Date fechaInicio=null, fechaFin=null;
    
    
    
    public String buttonGuardar_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        
        
        String uso="", resultadouso="";
        int resultado=0;
        
        try {
            
            productosBO   = new ProductosBO();
            productoUsoVO = new ProductoUsoVO();
            
            idProducto =(String)textFieldIDProducto1.getValue();
            idTipoUso = (String)listboxTipoUso.getValue();
            descripcionUso =(String)textAreaDescripcion.getValue();
            idDestino =(String)listboxDestinos.getValue();
            
            quienUsa = (String)texQuienUsa.getValue();
            
            String[] personas = selectedOptions;
            
            idPais= (String)listboxPais.getValue();
            idCiudad =(String)listboxCiudad.getValue();
            
           java.util.Date fechaIni = (java.util.Date) calendarInicio.getValue(); 

           if(fechaIni != null){
           fechaInicio= new Date(fechaIni.getTime());
           }else{
            error("La fecha de inicio es requerida");
            return null;
           }
           java.util.Date fechaF = (java.util.Date) calendarFin.getValue();
           if(fechaF != null){
           fechaFin = new Date(fechaF.getTime());
           }else{
            error("La fecha final es requerida");
            return null;
           }
           enProceso =(String)radioButtonGroup1.getValue();            
           duracion =(String)textFieldDura.getValue();
           dura =(String)listboxtiempo.getValue();
           ingresosGenerados=(String)textFieldIngre.getValue();
           detalleIngreso =(String)textAreaDetalleIngreso.getValue();
           recibeIngreso= (String)textFieldRecibeIngresos.getValue();
           importanciaITM = (String)textAreaImportanciaItm.getValue();       
           
            if(idTipoUso==null || idTipoUso.equals("0")){
               error("Por favor seleccione el tipo de Uso");
               return null;
           }else if(descripcionUso==null || descripcionUso.equals("")){
               error("Por favor digite la descripcion del uso");
               return null;
           }else if(idDestino==null || idDestino.equals("0")){
               error("Por favor seleccione un Destino");
               return null;
           }else if(quienUsa==null || quienUsa.equals("")){
               error("Por Favor Digite quien usa el producto");
               return null;
           }else if(idPais==null || idPais.equals("0")){
               error("Por favor Seleccione un pais ");
               return null;
           }else if(idCiudad==null || idCiudad.equals("0")){
               error("Por favor Seleccione una ciudad");
               return null;
           }else if(fechaInicio==null){
               error("Por favor seleccione una fecha de Inicio");
               return null;
           }else if(fechaFin==null){
               error("Por favor seleccion una fecha de fin del Uso");
               return null;
           }else if(enProceso==null || enProceso.equals("")){
               error("Por favor seleccione si se encuentra o no en proceso ");
               return null;
           }else if(duracion==null || duracion.equals("")){
               error("Por favor digite la duracion ");
               return null;
           }else if(dura==null || dura.equals("")){
               error("Por favor selccione en que se medira la duracion");
               return null;
           }else if(ingresosGenerados==null || ingresosGenerados.equals("")){
               error("Por favor digite el ingreso Generado");
               return null;
           }else if(detalleIngreso==null || detalleIngreso.equals("")){
               error("Por favor digite el detalle del Ingreso ");
               return null;
           }else if(recibeIngreso==null || recibeIngreso.equals("")){
               error("Por favor digite quien recibe los ingresos");
               return null;
           }else if(importanciaITM==null || importanciaITM.equals("")){
               error("Por favor digite la importancia para el ITM");
               return null;
           }
           if(fechaInicio.getTime()>fechaFin.getTime()){
            error("La fecha de inicio debe ser menor a la fecha final");
            return null;
           }
           if(!esNumericoRegex(duracion)){
            error("La duración solo permite valores numéricos");
            return null;
           }
           if(!esNumericoRegex(ingresosGenerados)){
            error("El ingreso generado solo permite valores numéricos");
            return null;
           }
           
           productoUsoVO.setIdTipoUso(idTipoUso);
           productoUsoVO.setDescripcionUso(descripcionUso);
           productoUsoVO.setDestino(idDestino);
           productoUsoVO.setQuienUsa(quienUsa);
           productoUsoVO.setReponsableUso(idResponsable);
           productoUsoVO.setIdPais(idPais);
           productoUsoVO.setIdciudadUso(idCiudad);
           productoUsoVO.setFechaInicio(fechaInicio);
           productoUsoVO.setFechaFin(fechaFin);
           productoUsoVO.setEnProceso(enProceso);
           productoUsoVO.setDuracion(duracion+" "+dura);
           productoUsoVO.setIngresosGenerados(ingresosGenerados);
           productoUsoVO.setDetalleIngreso(detalleIngreso);
           productoUsoVO.setRecibeIngreso(recibeIngreso);
           productoUsoVO.setImportanciaITM(importanciaITM);
           productoUsoVO.setIdProducto(idProducto);
           seleccion =(String)radioButtonGroupResponsableDefaultOptions.getSelectedValue();

           if(seleccion == null){
            error("Responsable es requerido");
            return null;
           }
          
           uso= productosBO.resgistroUsosProducto(productoUsoVO);
            
           resultado =Integer.parseInt(uso);
            
           
            
           if(resultado==0){
                error("ha ocurrido un error al insertar los datos.");
                return null;
           }else{if (seleccion.equals("personas"))
                   {
                     resultadouso=insertarUsoProductoPersonas(personas, resultado);
                   }
                  if(seleccion.equals("grupos")){
                     resultadouso= insertaruosProductoGrupo(resultado);                 }
                   
                if(!resultadouso.equals("El USO FUE REGISTRADO CORRECTAMENTE")){
                    error("error al resgitrar el uso");
                    return null;
                }
               info("El USO FUE REGISTRADO CORRECTAMENTE");
              // limpiar();            
            }        
        }catch(Exception e ){
           e.printStackTrace();
           error("Error al registrar el uso");
        }
        
        
        return null;
    
    }

    private boolean esNumericoRegex(String numero){
      Pattern p = Pattern.compile("[0-9]+");
      Matcher m = p.matcher(numero);
      return m.matches();
}
    
 
 private String insertarUsoProductoPersonas(String[] personas, int resultado) {
        
        
        
        String resultadoInsertarProGr="", idUso="", idPersonas="";
        
        try {
        productoUsoVO = new ProductoUsoVO();
        
        idUso= String.valueOf(resultado);
     
       
        for(int i=0;i<personas.length;i++){
            String par=new String();
            par= personas[i];
            idPersonas= par;
            
            productoUsoVO.setIdPersona(idPersonas);
            productoUsoVO.setIdUso(idUso);                         
             
             resultadoInsertarProGr=productosBO.resgistroUsoPersonas(productoUsoVO);
             if(resultadoInsertarProGr.equals("El USO FUE REGISTRADO CORRECTAMENTE")){
                     return resultadoInsertarProGr;
                }
               // error(resultado);
              if(!resultadoInsertarProGr.equals("El USO FUE REGISTRADO CORRECTAMENTE")){
                   // error("Error al ingresar los privilegios.");
                    return null;
                }   
             } 
        }
           
        catch (Exception e ){
            error("error al ingresar las personas responsables"+  e);
         }
       
        return resultadoInsertarProGr;
        
    }
 
 private String insertaruosProductoGrupo(int resultado) throws Exception{
          
        String resultadoInsertarProGr="";
        
        String idUso="", idGrupo="";
        try {
        
        idUso= String.valueOf(resultado);        
       
        idGrupo=(String)listboxGrupoInv.getValue();
        
        productoUsoVO.setIdUso(idUso);
        productoUsoVO.setIdGrupo(idGrupo);
        
        resultadoInsertarProGr= productosBO.resgistroUsoGrupo(productoUsoVO);
        
        if(!resultadoInsertarProGr.equals("El USO FUE REGISTRADO CORRECTAMENTE")){
            return null;
        } 
        
        }
    catch (Exception e )
    {
         error("error al ingresar el grupo responsable"+e);
    }
       
        return resultadoInsertarProGr;
    }

    public String buttonAdjuntarArchivo_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
       UploadedFile uploadedFile = this.fileUpload1.getUploadedFile();
       Archivo archivo = new Archivo();
       if(uploadedFile != null){
       if (uploadedFile.getContentType().equals("application/pdf")) {
            try {
                ServletContext context = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
                String path = context.getRealPath("/") + PATH_UPLOAD_PRODUCTO;
                nombreArchivo = textFieldNombreArchivo1.getValue().toString();
                archivo.uploadFile(uploadedFile, nombreArchivo, path);
                textFieldRutaArchivo1.setValue(path + textFieldNombreArchivo1.getValue().toString() + ".pdf");
            } catch (ArchivoException ex) {
                Logger.getLogger(Registro_usos.class.getName()).log(Level.SEVERE, null, ex);
                ex.printStackTrace();
                error("Error al adjunta el archivo");
            }

        } else {
            error("Solo se admiten archivos en formato PDF");
        }
       }else{
            error("El máximo tamaño permitido es de 10MB");
        }
       return null;
        
    }

    public String button1_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.

        String nombreArchivo = "", descripcion = "", rutaArchivo = "", idProducto = "",
                resultado = "";
        String identificador = "", idjsp = "";
        // hiddenFieldidentiicador1.setValue(productoVO.getIddentificadorJSP());

        Date fecha = null;

        try {
            productosBO = new ProductosBO();
            archivoProductoVO = new ArchivoProductoVO();
            idProducto = (String) textFieldIDProducto1.getValue();
            nombreArchivo = (String) textFieldNombreArchivo1.getValue();
            descripcion = (String) textAreaDescripcion1.getValue();
            rutaArchivo = (String) textFieldRutaArchivo1.getValue();

            java.util.Date fechaIni = (java.util.Date) calendarFecha1.getValue();

            fecha = new Date(fechaIni.getTime());

            archivoProductoVO.setNombreArchivo(nombreArchivo);
            archivoProductoVO.setDescripcion(descripcion);
            archivoProductoVO.setRutaArchivo(rutaArchivo);
            archivoProductoVO.setFecha(fecha);
            archivoProductoVO.setIdProducto(idProducto);
            resultado = productosBO.guardarArchivoProducto(archivoProductoVO);
            info(resultado);

        //  identificador = (String)hiddenFieldidentiicador.getValue();

        } catch (Exception e) {
            error("Error al guardar el anexo" + e);
            e.getStackTrace();
        }
        return null;
    }

    public String button2_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.

        tabSet1.setSelected(tabAnexo.getId().toString());
        textFieldIDProducto1.setValue(productoVO.getIdProducto());
        textFieldNombreProducto1.setValue(productoVO.getNombreProducto());
        return null;
    }
    
    public void limpiar() {

        listboxCiudad.setValue("");
        listboxDestinos.setValue("");
        listboxGrupoInv.setValue("");
        texQuienUsa.setValue("");
        textAreaDescripcion.setValue("");
        textAreaDescripcion1.setValue("");
        textAreaDetalleIngreso.setValue("");
        textAreaImportanciaItm.setValue("");
        textFieldDura.setValue("");
        textFieldIDProducto1.setValue("");
        textFieldIngre.setValue("");
        textFieldNombreArchivo1.setValue("");
        textFieldRecibeIngresos.setValue("");

        textFieldIDProducto1.setValue("");
        textFieldNombreProducto1.setValue("");
        textFieldNombreArchivo1.setValue("");
        textAreaDescripcion1.setValue("");
        fileUpload1.setValue("");
        textFieldRutaArchivo1.setValue("");
        calendarFecha1.setValue("");
    }

    public String button3_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.f
        return "consultarProducto";
    }

    public String button4_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        tabSet1.setSelected(tabRegistro.getId().toString());
        return null;
    }

    private void llenarInformacion(ProductoVO productoVO) {
        hiddenFieldidProducto.setValue(productoVO.getIdProducto());
        textFieldIDProducto1.setValue(productoVO.getIdProducto());
        textFieldNombreProducto1.setValue(productoVO.getNombreProducto());
      
    //idProducto = (String)hiddenFieldidProducto.getValue();
    }
    
    private static boolean esNumero(String cadena) {
        try {
            Integer.parseInt(cadena);
            return true;
        } catch (NumberFormatException nfe) {
            return false;
        }
    }

    public String getNombreArchivo() {
        return nombreArchivo;
    }

    public void setNombreArchivo(String nombreArchivo) {
        this.nombreArchivo = nombreArchivo;
    }

}

